// pages/user/login/index.js
const apiService = require('../../../utils/api.js');

Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		isAgreed: false, // 协议是否已勾选
		statusBarHeight: 44, // 系统状态栏高度
		redirectUrl: '', // 登录成功后的跳转地址
	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad(options) {
		// 获取系统信息
		this.getSystemInfo();
		
		// 获取跳转来源页面
		if (options.redirect) {
			this.setData({
				redirectUrl: decodeURIComponent(options.redirect)
			});
			console.log('登录页面接收到跳转来源:', this.data.redirectUrl);
		}
	},

	/**
	 * 获取系统信息
	 */
	getSystemInfo() {
		const systemInfo = wx.getSystemInfoSync()
		this.setData({
			statusBarHeight: systemInfo.statusBarHeight || 44
		})
	},

	/**
	 * 返回上一页
	 */
	onBack() {
		// 登录页面返回时直接跳转到首页，避免返回到需要登录的页面造成循环跳转
		wx.switchTab({
			url: '/pages/home/index/index',
			success: () => {
				console.log('从登录页面返回首页成功')
			},
			fail: (error) => {
				console.error('返回首页失败:', error)
				// 降级处理：使用navigateBack
				wx.navigateBack({
					delta: 1,
					fail: () => {
						console.error('navigateBack也失败了')
					}
				})
			}
		})
	},

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady() {

	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow() {

	},

	/**
	 * 切换协议勾选状态
	 */
	toggleAgreement() {
		this.setData({
			isAgreed: !this.data.isAgreed
		});
	},

	/**
	 * 一键登录
	 */
	handleQuickLogin() {
		if (!this.data.isAgreed) {
			// 未勾选协议，显示提醒
			this.showAgreementError();
			return;
		}

		// 显示加载提示
		wx.showLoading({
			title: '登录中...',
			mask: true
		});

		// 调用微信一键登录
		wx.getUserProfile({
			desc: '用于完善会员资料',
			success: (res) => {
				console.log('用户信息：', res.userInfo);
				
				// 这里可以调用后端接口进行登录验证
				this.loginWithUserInfo(res.userInfo);
			},
			fail: (err) => {
				console.log('获取用户信息失败：', err);
				wx.hideLoading();
				wx.showToast({
					title: '登录取消',
					icon: 'none',
					duration: 2000
				});
			}
		});
	},

	/**
	 * 使用用户信息登录
	 */
	async loginWithUserInfo(userInfo) {
		try {
			// 获取微信登录code
			const loginRes = await this.getWxLoginCode();
			if (!loginRes.success) {
				throw new Error(loginRes.message);
			}

			// 调用登录API
			const result = await apiService.login(loginRes.code, {
				nickName: userInfo.nickName,
				avatarUrl: userInfo.avatarUrl
			});

			if (result.success) {
				// 保存登录信息
				wx.setStorageSync('token', result.data.token);
				wx.setStorageSync('userId', result.data.userInfo._id);
				wx.setStorageSync('userInfo', result.data.userInfo);

				console.log('登录成功，用户信息已保存:', result.data.userInfo);

				wx.hideLoading();
				wx.showToast({
					title: '登录成功',
					icon: 'success',
					duration: 1500
				});

				// 登录成功后跳转到来源页面或首页
				setTimeout(() => {
					this.handleLoginSuccessRedirect();
				}, 1500);
			} else {
				throw new Error(result.message);
			}
		} catch (error) {
			console.error('登录失败:', error);
			wx.hideLoading();
			wx.showToast({
				title: error.message || '登录失败',
				icon: 'none',
				duration: 2000
			});
		}
	},

	/**
	 * 处理登录成功后的页面跳转
	 */
	handleLoginSuccessRedirect() {
		const redirectUrl = this.data.redirectUrl;
		console.log('处理登录成功跳转，目标页面:', redirectUrl);
		
		if (redirectUrl) {
			// 有来源页面，跳转回来源页面
			if (this.isTabBarPage(redirectUrl)) {
				// TabBar页面使用switchTab
				wx.switchTab({
					url: redirectUrl,
					success: () => {
						console.log('成功跳转回TabBar页面:', redirectUrl);
						this.triggerPageRefresh();
					},
					fail: (error) => {
						console.error('跳转TabBar页面失败:', error);
						this.fallbackToHome();
					}
				});
			} else {
				// 普通页面使用navigateTo
				wx.navigateTo({
					url: redirectUrl,
					success: () => {
						console.log('成功跳转回普通页面:', redirectUrl);
					},
					fail: (error) => {
						console.error('跳转普通页面失败:', error);
						this.fallbackToHome();
					}
				});
			}
		} else {
			// 没有来源页面，跳转到首页
			this.fallbackToHome();
		}
	},

	/**
	 * 判断是否为TabBar页面
	 */
	isTabBarPage(url) {
		const tabBarPages = [
			'/pages/home/index/index',
			'/pages/main/equipment-list/index',
			'/pages/main/user-profile/index'
		];
		return tabBarPages.includes(url);
	},

	/**
	 * 降级处理：跳转到首页
	 */
	fallbackToHome() {
		wx.switchTab({
			url: '/pages/home/index/index',
			success: () => {
				console.log('降级跳转首页成功');
				this.triggerPageRefresh();
			},
			fail: (error) => {
				console.error('降级跳转首页也失败:', error);
			}
		});
	},

	/**
	 * 触发页面数据刷新
	 */
	triggerPageRefresh() {
		// 触发当前页面数据刷新
		setTimeout(() => {
			const pages = getCurrentPages();
			if (pages.length > 0) {
				const currentPage = pages[pages.length - 1];
				if (currentPage.onShow) {
					currentPage.onShow();
				}
			}
		}, 100);
		
		// 延迟触发个人资料页面数据刷新
		setTimeout(() => {
			const profilePages = getCurrentPages();
			const profilePage = profilePages.find(page => page.route === 'pages/main/user-profile/index');
			if (profilePage && typeof profilePage.refreshUserData === 'function') {
				profilePage.refreshUserData();
				console.log('触发个人资料页面数据刷新');
			}
		}, 500);
	},

	/**
	 * 获取微信登录code
	 */
	getWxLoginCode() {
		return new Promise((resolve) => {
			wx.login({
				success: (res) => {
					if (res.code) {
						resolve({
							success: true,
							code: res.code
						});
					} else {
						resolve({
							success: false,
							message: '获取登录凭证失败'
						});
					}
				},
				fail: (error) => {
					console.error('微信登录失败:', error);
					resolve({
						success: false,
						message: '微信登录失败'
					});
				}
			});
		});
	},

	/**
	 * 手机安全登录
	 */
	handlePhoneLogin() {
		wx.navigateTo({
			url: '/pages/user/phone-login/index'
		});
	},

	/**
	 * 显示协议错误提醒
	 */
	showAgreementError() {
		// 让checkbox闪烁红色
		const query = wx.createSelectorQuery();
		query.select('.checkbox').boundingClientRect();
		query.exec((res) => {
			if (res[0]) {
				// 添加错误样式
				const checkbox = wx.createSelectorQuery().select('.checkbox');
				// 通过添加class实现视觉反馈
				this.setData({
					checkboxError: true
				});

				// 显示提示
				wx.showToast({
					title: '请先同意服务协议',
					icon: 'none',
					duration: 2000
				});

				// 2秒后移除错误样式
				setTimeout(() => {
					this.setData({
						checkboxError: false
					});
				}, 2000);
			}
		});
	},

	/**
	 * 显示服务协议
	 */
	showServiceAgreement() {
		wx.navigateTo({
			url: '/pages/home-sub/agreement/index?type=user',
			success: () => {
				console.log('跳转到用户协议页面成功');
			},
			fail: (error) => {
				console.error('跳转到用户协议页面失败:', error);
				wx.showToast({
					title: '跳转失败，请重试',
					icon: 'none'
				});
			}
		});
	},

	/**
	 * 显示隐私协议
	 */
	showPrivacyAgreement() {
		wx.navigateTo({
			url: '/pages/home-sub/agreement/index?type=privacy',
			success: () => {
				console.log('跳转到隐私政策页面成功');
			},
			fail: (error) => {
				console.error('跳转到隐私政策页面失败:', error);
				wx.showToast({
					title: '跳转失败，请重试',
					icon: 'none'
				});
			}
		});
	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide() {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload() {

	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh() {

	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom() {

	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage() {

	}
})